/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ig.util;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Stack;

public class Pila {

    public Stack Pilas = new Stack();

    public void anadir(String cadena) {
        int j = 1;
        boolean[] listo = new boolean[3];
        listo[0] = true;
        listo[1] = true;
        listo[2] = false;
        boolean ok = true;
        while (ok) {
            ok = false;            
            for (int i = 0; i < listo.length; i++) {
                if (!listo[i]) {
                    ok = true;
                }                
            }
        }
        Pilas.push(cadena); //va añadiendo y pasa el puntero al siguiente
        System.out.println(Pilas.capacity());
        System.out.println(Pilas.size());
    }

    public void sacar() {
        System.out.println("**********----------**********");
        System.out.println(Pilas.pop());//borra de la pila en donde hemos dejado el puntero
        System.out.println("**********----------**********");
    }

    public void ver() {
        int i = 0;
        if (Pilas.isEmpty() != true) {//si la pila esta bacía
            System.out.println("Primer Elemento: " + Pilas.peek());//peek
            for (i = Pilas.size() - 1; i >= 0; i--) {//rcorremos todos los elementos de la pila desde el ultimo al primero
                System.out.println("Pilas[" + i + "]: " + Pilas.elementAt(i));
                System.out.println("**********----------**********");
            }
        } else {
            System.out.print("No se han encontrado elementos");
        }
    }

    public void insertarEnIndice(String cadena, int indice) {
        if (indice < Pilas.size()) {
            Pilas.add(indice, cadena);//añade un elemento nuevo en la posicion q deseemos de la pila
        }
    }

    public void borrar(String cadena) {
        Pilas.remove(cadena);//borra un elemento de la pila
    }

    public Pila() {
    }

    public static void main(String[] args) throws IOException,
            NumberFormatException {

        String[] QTemp = "insert into tt  (NULL,NULL,NULL,NULL)".split("NULL");
        String QEjecutar = QTemp[0];
        String[] myToken = new String[3];
        myToken[0] = "1";
        myToken[1] = "2";
        myToken[2] = "3";
        for (int i = 0; i < QTemp.length - 1; i++) {
            try {
                QEjecutar += "'" + myToken[i] + "'" + QTemp[i + 1];
            } catch (Exception exception) {
                QEjecutar += "NULL" + QTemp[i + 1];
            }
        }
        System.out.println(QEjecutar);
        Pila pi = new Pila();
        int op;
        String cadena;
        int indices;
        do {
            System.out.println();
            System.out.println("1- Añadir a Pila ");
            System.out.println("2- Sacar de Pila");
            System.out.println("3- Ver Todo");
            System.out.println("4- Insertar en posición concreta Pila");
            System.out.println("5- Borrar Pila(s)");
            System.out.println("0- Salir");
            System.out.println("Elija opcion:");
            BufferedReader car = new BufferedReader(new InputStreamReader(System.in));
            op = Integer.parseInt(car.readLine());
            switch (op) {
                case 1:
                    System.out.println();
                    System.out.println("*_ 1 _*** Añadir a Pila *****");
                    System.out.println();
                    System.out.println("Introduce el nombre:");
                    cadena = car.readLine();
                    pi.anadir(cadena);
                    break;
                case 2:
                    System.out.println();
                    System.out.println("*_ 2 _**** Sacar de Pila *****");
                    System.out.println();
                    pi.sacar();
                    break;
                case 3:
                    System.out.println();
                    System.out.println("*_ 3 _**** Ver Todo *****");
                    System.out.println();
                    pi.ver();
                    break;
                case 4:
                    System.out.println();
                    System.out.println("*_ 4 _**** Insertar en una posicion concreta Pila *****");
                    System.out.println();
                    System.out.println("Introduce el nombre:");
                    cadena = car.readLine();
                    System.out.println("Introduce el indice:");
                    indices = Integer.parseInt(car.readLine());
                    pi.insertarEnIndice(cadena, indices);
                    break;
                case 5:
                    System.out.println();
                    System.out.println("*_ 5 _**** Borrar Pilas *****");
                    System.out.println();
                    System.out.println("Introduce el nombre:");
                    cadena = car.readLine();
                    pi.borrar(cadena);
                    break;
                case 0:
                    System.out.println();
                    System.out.println("*_ 0 _**** Salir *****");
                    System.out.println();
                    break;
            }
        } while (op != 0);
    }
}
